library(tidyverse)
Registered S3 methods overwritten by 'dbplyr':
  method         from
  print.tbl_lazy     
  print.tbl_sql      
── Attaching packages ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────── tidyverse 1.3.1 ──
✔ ggplot2 3.3.6     ✔ purrr   0.3.4
✔ tibble  3.1.7     ✔ dplyr   1.0.9
✔ tidyr   1.2.0     ✔ stringr 1.4.0
✔ readr   2.1.2     ✔ forcats 0.5.1
── Conflicts ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── tidyverse_conflicts() ──
✖ dplyr::filter() masks stats::filter()
✖ dplyr::lag()    masks stats::lag()
library(janitor)

Attaching package: ‘janitor’

The following objects are masked from ‘package:stats’:

    chisq.test, fisher.test
library(CodeClanData)

Attaching package: ‘CodeClanData’

The following object is masked from ‘package:dplyr’:

    starwars

The following object is masked from ‘package:tidyr’:

    population
library(fmsb)
whisky <- CodeClanData::whisky %>% clean_names()
whisky %>% 
  distinct(distillery)

whisky %>% 
  distinct(region)

whisky %>% 
  distinct(owner)

whisky %>% 
  distinct(floral)
whisky <- whisky %>% 
  mutate(across(body:floral, as.numeric))
whisky <- whisky %>% 
  pivot_longer(cols = body:floral,
               names_to = "notes",
               values_to = "score")
whisky %>%
  filter(distillery == "Aberfeldy") %>% 
  ggplot(aes(x = notes,
             y = score,
             fill = region)) +
  geom_col() +
  scale_y_continuous(expand = c(0, 0)) +
  scale_y_continuous(limits = c(0, 4)) +
  theme(axis.text.x = element_text(angle = 45, vjust = 1, hjust=1, size = 14),
        axis.text.y = element_text(size = 14),
        axis.title.x = element_text(size = 20),
        axis.title.y = element_text(size = 20),
        legend.title = element_text(size = 20),
        legend.text = element_text(size = 14)) +
  labs(x = "Notes",
       y = "\nScore",
       fill = "Whisky Region")
Scale for 'y' is already present. Adding another scale for 'y', which will replace the existing scale.

all_regions <- unique(whisky$region)

all_distilleries <- unique(whisky$distillery)
p <- whisky %>%
  group_by(owner) %>% 
  mutate(count = n()/12) %>% 
  ungroup() %>% 
  filter(count > 1) %>%
  filter(year_found > 1810 & year_found < 1840) %>% 
  ggplot(aes(x = year_found,
             y = capacity,
             colour = owner)) +
  geom_point(aes(shape = region)) +
        theme(axis.text.x = element_text(size = 8),
            axis.text.y = element_text(size = 8),
            axis.title.x = element_text(size = 8),
            axis.title.y = element_text(size = 8),
            legend.title = element_text(size = 8),
            legend.text = element_text(size = 8),
            plot.title = element_text(size = 8)) +
  scale_y_continuous(labels = scales::comma) +
      labs(x = "Year Founded",
           y = "Capacity",
           colour = "Distillery Owner",
           title = "Distillery Capacity by Year Founed\n")

plotly::ggplotly(p)
whisky %>% 
  group_by(year_found) %>% 
  summarise(count = n()) %>% 
  arrange(desc(count))
LS0tCnRpdGxlOiAiUiBOb3RlYm9vayIKb3V0cHV0OiBodG1sX25vdGVib29rCi0tLQoKYGBge3J9CmxpYnJhcnkodGlkeXZlcnNlKQpsaWJyYXJ5KGphbml0b3IpCmxpYnJhcnkoQ29kZUNsYW5EYXRhKQpsaWJyYXJ5KGZtc2IpCmBgYAoKYGBge3J9CndoaXNreSA8LSBDb2RlQ2xhbkRhdGE6OndoaXNreSAlPiUgY2xlYW5fbmFtZXMoKQpgYGAKCmBgYHtyfQp3aGlza3kgJT4lIAogIGRpc3RpbmN0KGRpc3RpbGxlcnkpCgp3aGlza3kgJT4lIAogIGRpc3RpbmN0KHJlZ2lvbikKCndoaXNreSAlPiUgCiAgZGlzdGluY3Qob3duZXIpCgp3aGlza3kgJT4lIAogIGRpc3RpbmN0KGZsb3JhbCkKYGBgCgoKYGBge3J9CndoaXNreSA8LSB3aGlza3kgJT4lIAogIG11dGF0ZShhY3Jvc3MoYm9keTpmbG9yYWwsIGFzLm51bWVyaWMpKQpgYGAKCgoKYGBge3J9CndoaXNreSA8LSB3aGlza3kgJT4lIAogIHBpdm90X2xvbmdlcihjb2xzID0gYm9keTpmbG9yYWwsCiAgICAgICAgICAgICAgIG5hbWVzX3RvID0gIm5vdGVzIiwKICAgICAgICAgICAgICAgdmFsdWVzX3RvID0gInNjb3JlIikKYGBgCgoKCmBgYHtyfQp3aGlza3kgJT4lCiAgZmlsdGVyKGRpc3RpbGxlcnkgPT0gIkFiZXJmZWxkeSIpICU+JSAKICBnZ3Bsb3QoYWVzKHggPSBub3RlcywKICAgICAgICAgICAgIHkgPSBzY29yZSwKICAgICAgICAgICAgIGZpbGwgPSByZWdpb24pKSArCiAgZ2VvbV9jb2woKSArCiAgc2NhbGVfeV9jb250aW51b3VzKGV4cGFuZCA9IGMoMCwgMCkpICsKICBzY2FsZV95X2NvbnRpbnVvdXMobGltaXRzID0gYygwLCA0KSkgKwogIHRoZW1lKGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KGFuZ2xlID0gNDUsIHZqdXN0ID0gMSwgaGp1c3Q9MSwgc2l6ZSA9IDE0KSwKICAgICAgICBheGlzLnRleHQueSA9IGVsZW1lbnRfdGV4dChzaXplID0gMTQpLAogICAgICAgIGF4aXMudGl0bGUueCA9IGVsZW1lbnRfdGV4dChzaXplID0gMjApLAogICAgICAgIGF4aXMudGl0bGUueSA9IGVsZW1lbnRfdGV4dChzaXplID0gMjApLAogICAgICAgIGxlZ2VuZC50aXRsZSA9IGVsZW1lbnRfdGV4dChzaXplID0gMjApLAogICAgICAgIGxlZ2VuZC50ZXh0ID0gZWxlbWVudF90ZXh0KHNpemUgPSAxNCkpICsKICBsYWJzKHggPSAiTm90ZXMiLAogICAgICAgeSA9ICJcblNjb3JlIiwKICAgICAgIGZpbGwgPSAiV2hpc2t5IFJlZ2lvbiIpCmBgYAoKCmBgYHtyfQphbGxfcmVnaW9ucyA8LSB1bmlxdWUod2hpc2t5JHJlZ2lvbikKCmFsbF9kaXN0aWxsZXJpZXMgPC0gdW5pcXVlKHdoaXNreSRkaXN0aWxsZXJ5KQpgYGAKCgoKCgpgYGB7cn0KcCA8LSB3aGlza3kgJT4lCiAgZ3JvdXBfYnkob3duZXIpICU+JSAKICBtdXRhdGUoY291bnQgPSBuKCkvMTIpICU+JSAKICB1bmdyb3VwKCkgJT4lIAogIGZpbHRlcihjb3VudCA+IDEpICU+JQogIGZpbHRlcih5ZWFyX2ZvdW5kID4gMTgxMCAmIHllYXJfZm91bmQgPCAxODQwKSAlPiUgCiAgZ2dwbG90KGFlcyh4ID0geWVhcl9mb3VuZCwKICAgICAgICAgICAgIHkgPSBjYXBhY2l0eSwKICAgICAgICAgICAgIGNvbG91ciA9IG93bmVyKSkgKwogIGdlb21fcG9pbnQoYWVzKHNoYXBlID0gcmVnaW9uKSkgKwogICAgICAgIHRoZW1lKGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KHNpemUgPSA4KSwKICAgICAgICAgICAgYXhpcy50ZXh0LnkgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDgpLAogICAgICAgICAgICBheGlzLnRpdGxlLnggPSBlbGVtZW50X3RleHQoc2l6ZSA9IDgpLAogICAgICAgICAgICBheGlzLnRpdGxlLnkgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDgpLAogICAgICAgICAgICBsZWdlbmQudGl0bGUgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDgpLAogICAgICAgICAgICBsZWdlbmQudGV4dCA9IGVsZW1lbnRfdGV4dChzaXplID0gOCksCiAgICAgICAgICAgIHBsb3QudGl0bGUgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDgpKSArCiAgc2NhbGVfeV9jb250aW51b3VzKGxhYmVscyA9IHNjYWxlczo6Y29tbWEpICsKICAgICAgbGFicyh4ID0gIlllYXIgRm91bmRlZCIsCiAgICAgICAgICAgeSA9ICJDYXBhY2l0eSIsCiAgICAgICAgICAgY29sb3VyID0gIkRpc3RpbGxlcnkgT3duZXIiLAogICAgICAgICAgIHRpdGxlID0gIkRpc3RpbGxlcnkgQ2FwYWNpdHkgYnkgWWVhciBGb3VuZWRcbiIpCgpwbG90bHk6OmdncGxvdGx5KHApCmBgYAoKYGBge3J9CndoaXNreSAlPiUgCiAgZ3JvdXBfYnkoeWVhcl9mb3VuZCkgJT4lIAogIHN1bW1hcmlzZShjb3VudCA9IG4oKSkgJT4lIAogIGFycmFuZ2UoZGVzYyhjb3VudCkpCmBgYAoK